package com.moujitx.wecom.service;

import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.moujitx.wecom.common.Result;
import com.moujitx.wecom.common.Wecom;
import com.moujitx.wecom.entity.WecomConfig;
import com.moujitx.wecom.repository.WecomConfigRepository;

/**
 * 企业微信服务类
 */
@Service
public class WecomService {

    @Autowired
    private WecomConfigRepository wecomConfigRepository;
    
    /**
     * 发送消息到指定的企业微信应用
     * 
     * @param destinationId 目的地ID
     * @param message 消息内容
     * @return 发送结果
     */
    public Result sendMessage(Long destinationId, String message) {
        // 从数据库获取配置
        Optional<WecomConfig> configOpt = wecomConfigRepository.findById(destinationId);
        
        if (!configOpt.isPresent()) {
            return Result.serverError("目的地ID不存在: " + destinationId);
        }
        
        WecomConfig config = configOpt.get();
        
        // 检查配置是否启用
        if (!config.getEnabled()) {
            return Result.serverError("目的地已禁用: " + destinationId);
        }
        
        // 获取访问令牌
        String accessToken = Wecom.getAccessToken(config.getCorpId(), config.getSecret());
        if (accessToken == null) {
            return Result.serverError("获取访问令牌失败");
        }
        
        // 发送消息
        String result = Wecom.sendMarkdownMessage(accessToken, "@all", message, config.getAgentId(), config.getId());
        return Result.ok(result);
    }
}